/***************************************************************************

-------------------
    begin                : 
    copyright            : kuzkok
    email                : kuzkok at gmail.com

***************************************************************************
*                                                                         *
*   This program is free software; you can redistribute it and/or modify  *
*   it under the terms of the GNU General Public License as published by  *
*   the Free Software Foundation; either version 2 of the License, or     *
*   (at your option) any later version.                                   *
*   
*   Данная программа является свободным программным обеспечением;         *
*   Вы можете распространять ее и/или модифицировать в соответствии с     *
*   GNU General Public License опубликованной Фондом свободного           *
*   программного обеспечения; используемая версия лицензии - 2 или        *
*   (по вашему выбору) любая более поздняя                                *
***************************************************************************/

#ifndef OBJECTARCHIVE_H
#define OBJECTARCHIVE_H

#include <QDateTime>

#include "apdmobject.h"


class ObjectArchive : public APDMObject
{
    Q_OBJECT
public:
    explicit ObjectArchive(QString theTableName);
    ObjectArchive(QUuid theEventID, QString theTableName);
    ObjectArchive(QString theTableName, QString whereClause);

    QDateTime createdDate()
    {
        return mCreatedDate;
    }

    QDateTime lastModified()
    {
        return mLastModified;
    }

    QDate effectiveFromDate()
    {
        return mEffectiveFromDate;
    }

    QDate effectiveToDate()
    {
        return mEffectiveToDate;
    }

    QString createdBy()
    {
        return mCreatedBy;
    }

    QString modifiedBy()
    {
        return mModifiedBy;
    }

    QString historicalState()
    {
        return mHistoricalState;
    }

    QString processFlag()
    {
        return mProcessFlag;
    }

    QString remarks()
    {
        return mRemarks;
    }

public slots:
    void setEffectiveFromDate(QDate value)
    {
        mEffectiveFromDate = value;
    }

    void setEffectiveToDate(QDate value)
    {
        mEffectiveToDate = value;
    }

    void setHistoricalState(QString value)
    {
        mHistoricalState = value;
    }

    void setProcessFlag(QString value)
    {
        mProcessFlag = value;
    }

    void setRemarks(QString value)
    {
        mRemarks = value;
    }

signals:

protected:
    void buildInsertStatement();
    void buildUpdateStatement();
    void bindQueryValues(QSqlQuery &query);

private:
    void loadValues();
    QDateTime
            mCreatedDate,
            mLastModified;
    QDate
            mEffectiveFromDate,
            mEffectiveToDate;
    QString
            mCreatedBy,
            mModifiedBy,
            mHistoricalState,
            mProcessFlag,
            mRemarks;
    QUuid
            mOriginEventID;

};

#endif // OBJECTARCHIVE_H
